#include "VectorFunctionFactory.h"
#include "functions.h"

namespace {
	template <size_t DIM>
		VectorFunction<DIM>* Createf1() {
			return new f_1();
		}
	#define DIM 1
	const bool registed_f1 = VectorFunctionFactory<DIM>::Instance()->RegisterFunction("f1", Createf1);
	#undef DIM
	
	template <size_t DIM>
		VectorFunction<DIM>* Createf2() {
			return new f_2();
		}
	#define DIM 1
	const bool registed_f2 = VectorFunctionFactory<DIM>::Instance()->RegisterFunction("f2", Createf2);
	#undef DIM
	
	template <size_t DIM>
		VectorFunction<DIM>* Createf3() {
			return new f_3();
		}
	#define DIM 2
	const bool registed_f3 = VectorFunctionFactory<DIM>::Instance()->RegisterFunction("f3", Createf3);
	#undef DIM
	
	template <size_t DIM>
		VectorFunction<DIM>* Createf4() {
			return new f_4();
		}
	#define DIM 2
	const bool registed_f4 = VectorFunctionFactory<DIM>::Instance()->RegisterFunction("f4", Createf4);
	#undef DIM

	template <size_t DIM>
		VectorFunction<DIM>* Createg1() {
			return new g_1();
		}
	#define DIM 1
	const bool registed_g1 = VectorFunctionFactory<DIM>::Instance()->RegisterFunction("g1", Createg1);
	#undef DIM
	
	template <size_t DIM>
		VectorFunction<DIM>* Createg2() {
			return new g_2();
		}
	#define DIM 1	
	const bool registed_g2 = VectorFunctionFactory<DIM>::Instance()->RegisterFunction("g2", Createg2);
	#undef DIM
	
	template <size_t DIM>
		VectorFunction<DIM>* Createg3() {
			return new g_3();
		}
	#define DIM 2
	const bool registed_g3 = VectorFunctionFactory<DIM>::Instance()->RegisterFunction("g3", Createg3);
	#undef DIM
	
	template <size_t DIM>
		VectorFunction<DIM>* Createg4() {
			return new g_4();
		}
	#define DIM 2
	const bool registed_g4 = VectorFunctionFactory<DIM>::Instance()->RegisterFunction("g4", Createg4);
	#undef DIM
}
